package com.linkhub.oms.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.linkhub.oms.entity.innerproperties.TrackEventInfoEntity;
import com.linkhub.oms.entity.typehandler.QtFastjsonTypeHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.FieldNameConstants;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author Redball
 * @version 1.0.0
 * @Description OrderTrackEntity
 * @createTime 2024/11/10 12:43
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName(value = "t_order_track_info", autoResultMap = true)
@FieldNameConstants
public class OrderTrackEntity implements Serializable {

    /**
     * 主键
     */
    @TableId(value = "Fid", type = IdType.AUTO)
    private Long id;

    /**
     * 物流单号
     */
    @TableField("Fnumber")
    private String number;

    /**
     * 系统orderId
     */
    @TableField("Fsys_order_id")
    private String sysOrderId;

    /**
     * 运输商代码
     */
    @TableField("Fcarrier")
    private Integer carrier;

    /**
     * 最新物流主状态
     */
    @TableField("Flatest_status")
    private String latestStatus;

    /**
     * 最新包裹子状态
     */
    @TableField("Flatest_sub_status")
    private String latestSubStatus;

    /**
     * 最新状态描述
     */
    @TableField("Flatest_sub_status_descr")
    private String latestSubStatusDescr;

    /**
     * 最新事件发生时间（ISO格式）
     */
    @TableField("Flatest_event_time_iso")
    private String latestEventTimeIso;

    /**
     * 最新事件发生时间（UTC时间）
     */
    @TableField("Flatest_event_time_utc")
    private String latestEventTimeUtc;

    /**
     * 最新事件描述，包括：事件发生的地点、承运中行为、关键状态说明。
     */
    @TableField("Flatest_event_description")
    private String latestEventDescription;

    /**
     * 最新事件地点
     */
    @TableField("Flatest_event_location")
    private String latestEventLocation;

    /**
     * 运单时效
     */
    @TableField("Fdays_after_order")
    private Integer daysAfterOrder;

    /**
     * 信息无更新天数
     */
    @TableField("Fdays_after_last_update")
    private Integer daysAfterLastUpdate;

    /**
     * 运输时效
     */
    @TableField("Fdays_of_transit")
    private Integer daysOfTransit;

    /**
     * 妥投时效
     */
    @TableField("Fdays_of_transit_done")
    private Integer daysOfTransitDone;

    /**
     * 预期达到时间信息的提供者,17TRACK表示17TRACK提供，Official表示由运输商官方提供，null表示没有提供者
     */
    @TableField("Festimated_delivery_date_source")
    private String estimatedDeliveryDateSource;

    /**
     * 预计投递最早时间（ISO格式）
     */
    @TableField("Festimated_delivery_date_from")
    private String estimatedDeliveryDateFrom;

    /**
     * 预计投递最晚时间（ISO格式）
     */
    @TableField("Festimated_delivery_date_to")
    private String estimatedDeliveryDateTo;

    /**
     * 运输节点事件集合，存储json串
     */
    @TableField(value = "Ftrack_events", typeHandler = QtFastjsonTypeHandler.class)
    private List<TrackEventInfoEntity> trackEvents;

    /**
     * 创建时间
     */
    @TableField("Fcreated_time")
    private LocalDateTime createdTime;

    /**
     * 修改时间
     */
    @TableField("Fupdate_time")
    private LocalDateTime updateTime;

}
